package com.dxy.server.utils;

import java.util.regex.Pattern;

/**
 * @Description TODO
 * @Author dangxianyue
 * @Date 2023/4/1 0:13
 */
public class PatternUtil {

    // 通过正则表达式验证数据包的完整性
    // 数据包的固定传输格式是：{"enterpriseId":"123456","dataId":"1001","report":"abcdef"}
    // *表示0或多个，+表示1或多个，\s表示任意空白字符，\S表示任意非空白字符
    private static final String REGEX = "\\s*\\{\\s*\"enterpriseId\"\\s*:\\s*\"\\S+\"\\s*,\\s*\"dataId\"\\s*:\\s*\"\\S+\"\\s*,\\s*\"report\"\\s*:\\s*\"\\S+\"\\s*\\}\\s*|\\s*\\{\\s*\"enterpriseId\"\\s*:\\s*\"\\S+\"\\s*,\\s*\"report\"\\s*:\\s*\"\\S+\"\\s*,\\s*\"dataId\"\\s*:\\s*\"\\S+\"\\s*\\}\\s*|\\s*\\{\\s*\"dataId\"\\s*:\\s*\"\\S+\"\\s*,\\s*\"enterpriseId\"\\s*:\\s*\"\\S+\"\\s*,\\s*\"report\"\\s*:\\s*\"\\S+\"\\s*\\}\\s*|\\s*\\{\\s*\"dataId\"\\s*:\\s*\"\\S+\"\\s*,\\s*\"report\"\\s*:\\s*\"\\S+\"\\s*,\\s*\"enterpriseId\"\\s*:\\s*\"\\S+\"\\s*\\}\\s*|\\s*\\{\\s*\"report\"\\s*:\\s*\"\\S+\"\\s*,\\s*\"enterpriseId\"\\s*:\\s*\"\\S+\"\\s*,\\s*\"dataId\"\\s*:\\s*\"\\S+\"\\s*\\}\\s*|\\s*\\{\\s*\"report\"\\s*:\\s*\"\\S+\"\\s*,\\s*\"dataId\"\\s*:\\s*\"\\S+\"\\s*,\\s*\"enterpriseId\"\\s*:\\s*\"\\S+\"\\s*\\}\\s*\n";

    private static final Pattern pattern = Pattern.compile(REGEX);

    public static boolean matches(String content) {
        return pattern.matcher(content).matches();
    }
}
